<!DOCTYPE html>
<html lang="zn">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>对象</title>
    <script>
        /*
            JS中数据类型
                -String 字符串
                -Number 数值
                -Boolean 布尔值
                -Null 空值
                -Undefined 未定义
                以上这5种类型属于基本数据类型，以后我们看到的值只要不是上边的5种，全都是对象
                -Object 对象

                基本数据类型都是单一的值 "hello" 13 true,
                值和值之间没有任何的联系

                在JS中表示一个人的信息(name gender age)
                    var name = "孙悟空"
                    var gender = "男"
                    var age = 18;
                如果使用基本数据类型的数据，我们所创建的变量都是独立，不能成为一个整体

                对象属于一种复合的数据类型，在对象中可以保存多个不同数据类型的属性

                对象的分类：
                    1.内建对象
                        -由ES标准中定义的对象，在任何的ES的实现中都可以使用
                        -比如:Math String Number Boolean Function Object...
                    2.宿主对象
                        -由JS的运行环境提供的对象，目前来讲主要指由浏览器
                        -比如 BOM DOM
                    3.自定义对象
                        -由开发人员自己创建的对象
        */

        // 创建对象
        /*
            使用new关键字调用的函数，是构造函数constructor
                构造函数是专门用来创建对象的函数
            使用typeof检查一个对象时，会返回object
        */
        var obj = new Object();

        /*
            在对象中保存的值称为属性
            向对象添加属性
                语法：对象.属性名 = 属性值;
        */
        // 向obj中添加一个name属性
        obj.name = "孙悟空"
        // 向obj中添加一个gender属性
        obj.gender = "男";
        // 向obj中添加一个age属性
        obj.age = 18;

        /*
            读取对象中的属性
                语法：对象.属性名
            如果读取对象中没有的属性，不会报错而是会返回undefined
        */
        console.log(obj.name);
        console.log(obj.hello)

        /*
            删除对象的属性：
                delete 对象.属性名
        */
        delete obj.name
        console.log(obj.name)
    </script>
</head>
<body>
    
</body>
</html>